Interactive programmer for biomedical implantable devices

ABSTRACT

A computer-controlled programmer having a user-interactive display is designed to control the parameters of a wide variety of implantable devices with different programming requirements. During programming, screen messages prompt the user to perform required actions by pressing lighted targets on the display screen. The programmer includes a console and a lightweight cable connected programming head. When the console is turned on, a self test routine automatically tests the programmer&#39;s batteries, memory banks and communications systems. For the communications test, the programmer employs a self-contained telemetry system which mimics the response of an implant. With certain implants, the programmer automatically changes programming options in response to information received from an implant as well as in response to selection of certain modes and lead configurations. The programmer software is designed to limit access to certain values and parameters which require the attendance of an authorized physician. Access to these non-routine programming functions is provided via a combination lock on the console. With implants having data telemetry, the programmer software is designed to confirm programming by comparing a stored replica of the originally transmitted programming data to an automatic echo of the programming data received by the implant.

CROSS REFERENCE TO RELATED APPLICATIONS

This application is related generally to the following U.S.applications, each of which is assigned to the assignee of the presentapplication and incorporated by reference herein in its entirety:

    ______________________________________                                        Serial                                                                        No.    Filed    Title              Inventor(s)                                ______________________________________                                        153,093                                                                              5/27/80  Implant Telemetry System                                                                         Slocum et                                                                     al.                                        195,665                                                                              10/9/80  Implantable Externally                                                                           Lesnick                                                    Programmable Microprocessor                                                   Controlled Tissue Stimulator                                  207,003                                                                              11/14/80 Multi-Mode Microprocessor-                                                                       Leckrone                                                   Based Programmable Cardiac                                                                       et al.                                                     Pacer                                                         239,467                                                                              3/2/81   Cardiac Pacer With Improved                                                                      Saulson                                                    Battery System, Output                                                                           et al.                                                     Circuitry, and Emergency                                                      Operation                                                     239,468                                                                              3/2/81   Cardiac Pacer With Improved                                                                      Saulson                                                    Battery System, Output                                                                           et al.                                                     Circuitry, and Emergency                                                      Operation                                                     ______________________________________                                    

BACKGROUND OF THE INVENTION

The invention relates generally to the field of programmable biomedicalimplantable devices and more particularly to external programmers forimplanted cardiac pacers and neural stimulators.

A cardiac pacer is a life-sustaining therapeutic device which cooperateswith the patient's heart by causing it to beat in a natural rhythm whenthe heart may othewise fail to provide adequate blood circulation.Commercially practicable cardiac pacers are powered by self-containedbatteries and fully implanted in hermetically sealed or encapsulatedcontainers in the patient's body, for example, in the shoulder regionjust beneath the skin. Electrical conductors called pacer leads run fromthe implant through an opening beneath the skin in a nearby vein andextend through the vein to the heart. The lead terminates in anelectrode which contacts the interior wall of the heart muscle.Electrical stimulation pulses are generated by the cardiac pacer andapplied via the pacer lead to the cardiac muscle to stimulatecontraction, particularly when spontaneous natural heart action isabsent. Along with the batteries, the implanted pacer includeselectronic circuitry for generating the stimulation pulses. The pulseswhich are applied to the heart muscle have two fundamental variablecharacteristics or parameters: pulse intensity and pulse timing. Pulseintensity normally refers to the amplitude (pulse height) of theelectrical current flowing to the heart muscle via the pacer lead duringthe pulse. Pulse timing refers to the duration (pulse width) of thepulse as well as to the time interval between pulses (interpulseperiod), which is related to the pulse rate, e.g., 70 beats per minute.

In early pacemakers the pulse parameters were fixed, established duringmanufacture. In 1972 the first digital programmable pacemaker, theCordis Omnicor, was introduced to the market. The term "programmable" inthis context means the ability to alter parameter values in the implantnoninvasively from outside the body by transferring parameter data froman external programmer to the implant. See, for example, U.S. Pat. No.3,805,796 to Terry et al. Digital pacing generally refers to the use ofa digital counting chain driven by a high frequency oscillator todetermine all the timing intervals. See, for example, U.S. Pat. No.3,557,796 to Keller et al. The advantages of programmability onceobtained were readily apparent. Since most cardiac patients are in acontinually changing, and for older patients, usually declining state ofhealth, the optimum pacer parameters must be changed frequently duringthe patient's lifetime. Without programmability such changes involvedsurgery or invasive techniques which ran significantly increased risk ofinfection due to the presence of the foreign body in the patient. Thisrisk is eliminated by programmability. Secondly, a manufacturer does nothave to proliferate an inventory of models of pacers which vary only inparameter values. Today these advantages are such that nearly allpacemakers are, and many argue all should be, programmable.

Nevertheless, programmability has not given rise to a universal pacer,i.e. a single model. Instead, with the continual march of technology andmedical science, as well as the need for pacers which operate in limitedpacing models such as ventricular inhibited pacing and AV synchronous orAV sequential pacing, a successful pacer manufacturer must contend witha growing host of pacers all implanted in living human patients and manyprogrammable in different ways. The future definitely holds in storeimplanted pacers with telemetry for data communication with the outsideworld. New pacing modes, diagnostic techniques and temporary pacingtreatments will also undoubtedly be discovered.

The challenge is to develop a programmer which is versatile enough toprogram all of these pacer products safely noninvasively and with aprocedure as straightforward as the functional requirements.

SUMMARY OF THE INVENTION

A computer-controlled programmer having a user-interactive display isdesigned to control the parameters of a wide variety of implantabledevices, particularly cardiac pacers and neutral stimulators, withdifferent programming requirements. During programming, screen messagesprompt the user to perform required actions by pressing lighted targetson the display screen. The programmer includes a console and alightweight cable-connected programming head. When the console is turnedon, a self test routine automatically tests the batteries, memory banksand communications system. For the communications test, the programmeremploys a self-contained telemetry system which mimics the response ofan implant. Standard values can be rapidly programmed for any of theselected type of implants (cardiac or neutral) at any time during theprogramming procedure by means of either a "standard" button located onthe programming head or a switch on the console. The programmer producesan intermittent audio tone when the power is turned on and when standardvalues are selected. A steady tone accompanies the transmission of theprogramming pulses to the implant. A pulsating tone at the end oftransmission or during self test indicates a possible problem. Theconsole's display provides instructions for correcting detectedproblems. The programmer automatically changes programming options inresponse to certain information received from an implant with telemetryas well as in response to selection of certain modes and leadconfigurations. The programmer software is designed to limit access tocertain ranges of values of parameters and certain parametersthemselves, which require the attendance of an authorized physician. Thephysician gains acces to these less routine programming functions byentering a predetermined numerical code via a "combination lock" on thefront panel of the console. With certain implants having data telemetry,the programmer software is designed to confirm programming by comparingthe originally transmitted programming data to an automatic echo of theprogramming data received by the implant.

BRIEF DESCRIPTION OF THE DRAWING

FIG. 1 is a perspective view of a preferred embodiment of theinteractive programmer according to the invention.

FIG. 2 is a side view of the interactive programmer of FIG. 1 inelevation with a portion broken away to reveal the location of the selftest module.

FIG. 3 is a plan view, as seen by the operator, of the transparentswitch matrix overlay for the display in the programmer of FIG. 1.

FIG. 4 is an exaggerated sectional view taken along lines 4--4 of FIG. 3illustrating the construction of the overlay.

FIG. 5 is a plan view of the self test module.

FIG. 6 is a sectional view taken along lines 6--6 of FIG. 5.

FIG. 7 is a functional block diagram of the electronics for theinteractive programmer of FIG. 1.

FIG. 8 is a wiring diagram for the electronics of the interactiveprogrammer of FIG. 1.

FIG. 9 is a block diagram of the CPU microboard of FIG. 8.

FIG. 10 is a block diagram of the memory microboard of FIG. 8.

FIG. 11 is a block diagram of the digital I/O board of FIG. 8 except forthe communications self test system.

FIG. 12 is a block diagram of the analog I/O board of FIG. 8.

FIG. 13 is a block diagram of the self test circuit completing thedigital I/O board of FIG. 8.

FIG. 14 is a flow chart of the programming sequence.

FIGS. 15A-15H are pictorial representations of the self test displayformats which appear on the screen of FIG. 1 following turn on.

FIGS. 16A-16D are pictorial representations of the sequence of displaysfor programming the Omni-Stanicor Model No. 162D.

FIG. 17 is a sample printout of the interactive programmer of FIG. 1recording typical programming of a Model 162D.

FIGS. 18A-18E are pictorial representations of a typical sequence ofdisplay formats for programming the Model No. 336 Multicor-Gamma pacer.

FIG. 19 is a sample printout for Model No. 336.

FIG. 20 is a functional block diagram illustrating the preferred systemfor interrogating an implant with telemetry.

FIG. 21 is a functional block diagram illustrating the preferred systemfor programming an implant with telemetry.

DESCRIPTION OF THE PREFERRED EMBODIMENT

The programmer described below is an external instrument capable ofnoninvasively controlling the parameter settings (i.e., programming) forimplantable pulse generators manufactured by Cordis Corp., the assigneeof the present application. Unless otherwise indicated, the implantedpulse generators themselves are not a part of this disclosure. In fact,the assignee has a wide variety of programmable pulse generatorspresently on the market or in use. Up until recently all of these unitshave been designed to be programmed by a string of magnetic pulses whichare counted by the implant. The number of pulses in the stringdetermines the parameter and selected parameter value in this type ofimplant. The Omnicor and Sequicor pacers and the 900 series neuralstimulators are reprogrammed in response to the length of one or morestrings of magnetic pulses at a single rate while the recentlyintroduced Multicor pacers respond to the length of strings of magneticpulses of differing rates. Implants which are in the process of beingintroduced to the marketplace respond to binary information expressed asa string of pulse width modulated magnetic or infrared pulses. Moreover,the programmer is designed to receive myriametric telemetry of the typedescribed in U.S. Pat. No. 4,361,153 and copending application Ser. No.195,665.

As shown in FIG. 1, the interactive programmer consists of two units: amain tabletop console 10 and a lightweight handheld programming head 12interconnected with the console by cable 14. The programming head 12 isdescribed in detail in U.S. Pat. No. 4,361,153. The console 10 includesa rectangular outer case of injection molded high impact polystyreneapproximately 13 inches wide by 19 inches deep with a sloping upper faceapproximately 2 inches high in front and 101/2 inches high at the back.The console case consists of two halves 10a and 10b as shown in FIG. 2,which fit together in a clamshell arrangement hinged at the rear with asealing gasket (not shown) at the junction. The front of the console 10includes displays and touch switches for interacting with the operatoras well as a thermal printer for recording the programming operation. Aversatile alpha numeric display 16 is mounted in the lower portion ofthe front panel. Preferably, the display is in the form of a gasdischarge display matrix presenting twelve lines of forty characterseach. The display includes a standard sixty-four character ASCIIcharacter set in a 5×7 element array (plus five additional elements forunderlining) modified to include six custom characters, namely a filledin diamond for the pushbutton targets, the Greek letters delta, omegaand mu and a full height vertical line as well as a 5×7 cross forgraphic use in separating the screen into sections. The display ofchoice is presently an IEE Argus 480 gas discharge display whichpresents bright red characters against dark background. The Argusdisplay requires a six bit parallel input for the character, plus twobits for underlining, blinking and half bright features. In addition, aswitchable logic line allows the screen to be turned off to conservepower without loss of memory contents of the screen.

Over the rectangular matrix of the alpha numeric display 16 there is atransparent, mechanical, touch sensitive switch matrix overlay 18. Thedisplay 16 can be read through the switch overlay 18. As shown in FIG.4, the overlay 18 itself is comprised of a plurality of flexibletransparent sheets. The switch assembly includes a pair of parallelsubstrates 20 and 22 and a separator 24. One of the substrates 20 has aplurality of parallel conductive paths deposited on the inner surfacethereof and arranged in the form of spaced parallel columns 20a as shownin FIGS. 3 and 4. The separator 24 includes a plurality of spacedparallel laterally extending rectangular apertures 24a. The othersubstrate 22 includes a plurality of spaced parallel conductive paths22a deposited on the inner surface thereof and approximately coextensivewith the adjacent separator apertures 24a. An optional filter sheet 26is mounted over the upper one of the substrates to complete the overlayswitch matrix. A typical switch is operated by pressing the overlayassembly at the intersection of a row path 22a with a column path 20afor example at location 28. The conductive paths can make contactthrough the apertures 24a of FIG. 3. In the preferred design, tenconductive columns 20a are arranged in conjunction with twelveconductive rows 22a to form a matrix of one-hundred and twenty switchesover the twelve line alpha numeric display. The switch positions 28 arepreferably four display characters apart and cover two characters each.Thus for each line the switches cover characters 1 and 2, 5 and 6 9 and10 and so on up to characters 37 and 38. When a particular one of theswitches is pressed, the decoding logic in the console 10 whichperiodically polls the switch matrix, provides a ready signal and an 8bit data word identifying the switch that was pressed. The overlay 18produces outputs for the ten columns and twelve rows on twenty-two lineribbon conductor 30.

In addition to the alpha numeric display 16, the front of the console 10includes bistable touch switches 32 and 34 illuminated with respectivelight emitting diodes (LED's). Switch 32 is an on/off charge buttonwhich when pressed and released turns the programmer on. The word "ON"appears in the top half of the button and the programmer "beeps" oncevia an audible tone generator 36 (FIG. 7). When the button is pressedand released again, the programmer is turned off and the word "CHARGE"appears if the programmer is plugged into a wall outlet at the time.Switch 34 is the "STAT SET" button for programming standard values forpacers and for turning neural stimulators off. After the interactiveprogrammer has been turned on, and the implant type has been selected ifrequired, the words "STAT SET" appear in the button. If the user pushesthe button, the programmer "beeps". The stat set values for the pacermodel will appear on the display screen 16 after which they can beprogrammed into the pacer. A liquid crystal display 36 shows the time ofday unless data and year are being set. Switches 38 and 40 are mode andincrement buttons used to reset the calendar clock. Combination lock 42is used to control the level of access to the interactive programmer.The combination lock consists of two sets of thumbwheel switches, oneset (not shown) is concealed behind a locked door. The interactiveprogrammer is designed so that when the user attempts to program aparticular implant or a particularly sensitive parameter, the systemwill check to see if access is restricted. If it is, the system willcheck to see if the correct combination has been entered on combinationlock 42. If it has been entered, the interactive programmer will be inthe full access mode; if not, it will be in the "limited access" mode.

The console 10 is also equipped with a printer 44. The printer ispreferably a Texas Instruments EPN 9120, twenty column thermal printeremploying 21/2 inch wide paper which exits through slot 46 on the frontof the console. A printer control system 48 (FIG. 7) causes the printerto print out the programmed parameters, Model No., date and time. Dateand time are provided by a four-year calendar clock chip 36a powered byan independent battery. Button 50 in the console advances the printoutpaper which can be restocked via the access door 52 on the front of theconsole 10.

Programming head 12 has a flat circular bottom portion 12a which theoperator positions over the site of the implant for programming. Theprogramming head 12 (FIG. 7) contains a magnetic coil 60, an infraredtransmitter 62 and a reflected signal telemetry receiving system 64,described in detail in U.S. Pat. No. 4,361,153. The telemetry receiver64 is also used even in non-telemetry implants to produce an acquisitionsignal from an acquisition detector 66 which drives an acquisition leador leads 68. Preferably a pair of LED's 68 are used, a yellow and agreen, mounted in the upper surface of the cylindrical body of theprogramming head. Together, these lights form the "acquisition"indicator which, when lit, inform the user that the programming head iswithin working distance of the implant. The thresholds for the yellowand green lights are set differentially so that the yellow light comeson first (e.g. 11/2 inches) followed by the green light (e.g., 1 inch)as the programming head approaches the implant. The handle 12b of theprogramming head 12 is equipped with an action button 70 located at thetop of the handle "under the user's thumb" (FIGS. 1 and 7). The actionbutton 70 is pushed and released to produce a programming transmission.In the front of the upright portion of the handle 12b a STAT SET button72 is provided for emergency programming of standard parameter valuesand modes considered safe for most patients without having to leave thepatient to return to the console. Details of preferred circuitry for theprogramming head are disclosed in U.S. Pat. No. 4,361,153.

Power is provided to the console 10 and head 12 via power supplies andbattery chargers 74. Battery packs 76 include a main or system batteryand a programming battery. The programming battery preferably consistsof fourteen sealed rechargeable Ni-Cd fet-A cells in series providing16.8 volts with a 0.7 ampere hour capacity. The programming batteryprovides power for the programming output and printer. The systembattery comprises preferably ten sealed rechargeable Ni-Cd size 1/3Acells in series providing 12 volts with a 0.15 ampere hour capacity, foruse during temporary power losses by providing up to thirty seconds ofoperation to avoid misprogrammings. All operations, such as interactionwith the display during selection of parameter values, are powered byline current, except for programming. The batteries are continuouslycharged during on line operation. The battery charger for theprogramming battery is separate from the battery charger for the backupbattery. A line monitor and battery monitors 78 and 80 continuouslyadvise the console electronics of any unacceptable power drop. Apower-off timer 82 is used during the battery self test mode describedbelow. The console 10 also includes a separate communications testsystem 84 for checking the telemetry receiver 64, IR transmitter 62 andmag coil 60 of the programming head 12. DIP switches 86 enable theconsole to be preset to accommodate either neural or cardiac pacerimplants or to bypass the access control digital lock 42. The console isoperated via a single microprocessor system 88 with associated memory90. Power for the programming head is provided via the head power switch92 controlled by the microprocessor system and the high current requiredfor the magnetic coil 60 is provided separately via a mag coil lever 94located in the console 10.

The electronic circuitry of the console 10 is identified in FIGS. 8-13with the exception of the printer control system comprising a separatemicrocomputer system. The overall organization of the electronics ofconsole 10 can be appreciated from FIG. 8. The main power board 100,transformer 102, heat sink mounted components 104, "mod" board powersupply 106, and 12 volt and 18 volt battery packs 108 and 110 supply therequired voltages and currents for operating the remainder of theelectronics, for example, to power the display 16 and overlay switches18. The console switch board 112 carries the on/off and STAT SET lightedpanel switches 32 and 34. "LINE ON" is an input to the consoleswitchboard 112 originating from the main power board 100 which causesthe charge indicator light to be illuminated on the on/off switch whenthe unit is plugged into a source of line current. The Std. LED K inputto the console switchboard 112 causes the STET SET switch to beilluminated after selecting neural or cardiac pacer implants.

The operating system electronics are provided on a series of printedcircuit cards of the RCA Microboard configuration carried in standardCDS card cage. The circuit boards are interconnected by a backplaneconnector 114. The heart of the system is the CPU board 116 whichcomprises a standard commercially available RCA Microboard CDP 18S603diagrammed generally in FIG. 9. The single chip RCA CDP 1802microprocessor 118 is driven by a 2 MHz crystal 120 and is interfacedwith one kilobyte of RAM 122 by means of an address latch and decodecircuit 124. The control, data and address busses of the microboard businterface system are connected to the microboard universal backplaneconnector P1 which have the following standard designations within theRCA 1800 microprocessor system.

                  TABLE I                                                         ______________________________________                                        Pin       Signal     Pin       Signal                                         ______________________________________                                        A         TPA-P      1         DMAI-N                                         B         TPB-P      2         DMAO-N                                         C         DBO-P      3         RNU-P                                          D         DBI-P      4         INT-N                                          E         DB2-P      5         MRD-N                                          F         DB3-P      6         Q-P                                            H         DB4-P      7         SCO-P                                          J         DB5-P      8         SCI-P                                          K         DB6-P      9         CLEAR-N                                        L         DB7-P      10        WAIT-N                                         M         AO-P       11        -5V/-15V                                       N         AI-P       12        SPARE                                          P         A2-P       13        CLOCK OUT                                      R         A3-P       14        NO-P                                           S         A4-P       15        N1-P                                           T         A5-P       16        N2-P                                           U         A6-P       17        EF1-N                                          V         A7-P       18        EF2-N                                          W         MRW-N      19        EF3-N                                          X         EF4-N      20        +12V/+15V                                      Y         +5V        21        +5V                                            Z         GND        22        GND                                            ______________________________________                                    

The letters "P" and "N" in the foregong table designate positive ornegative signal level. The serial and parallel I/O interface circuitryand ROM available on the CPU board 116 are not used. All of the readonly memory is furnished on a separate standard memory board, namely theRCA Microboard 32/64 kilobyte EPROM/ROM/RAM CDP18S626 which isdiagrammed generally in FIG. 10. Ten of the sixteen memory sockets areused for INTEL 7732 EPROM's to provide a 40 kilobyte memory matrix 128connected to the backplane connector by way of an address latch 130,address decoder 132, signal conditioning circuit 134, inhibit logiccircuit 136 and bidirectional bus drivers 138. The EPROM addresses usedrun in hex code from location 000 through 9FFF. RAM locations on themicroboard 116 employed in this system start at location F000 and extendto location F3FF. Memory board 126 contains the firmware programinstructions for operating the CPU board 116. The microcomputer systemis interfaced with the beeper 140 on the console switchboard 112, thealpha numeric display 16, the overlay switches 18, the limited accessswitchboard 42, the DIPswitch option board 86 and the communicationstest system 84 (FIG. 7) by means of a digital I/O board 142 which alsocarries the electronics for the communications test system. The I/Oportion of board 142, also connected to the backplane, is shown indetail in FIG. 11. In FIG. 11, devices U411 through U415 are allidentical eight bit I/O ports (RCA CDP1852). U409 is an n-bit decoder(CDP 1853). Devices U403 are a dual flipflop interconnected as shown inFIG. 11 with U404 which is a shift register which drivesdecoder/multiplexer arrangement U402 and U401 (CD4515 and CD4067respectively) to interrogate the overlay switches. In FIG. 11,connections to the computer backplane are designated by BP(5) for pin 5of connector P1 of the universal microboard connector. The connectionsto th analog card edge pseudo backplane connector are designated as, forexample, (P)BP. That is, if the designation BP follows rather thanprecedes the pin designation, it refers to the analog card edge ratherthan the microcomputer backplane. The architecture of the 1802microprocessor is arranged to provide access to seven input devices andseven output devices. The assembly language instruction OUT 1, forexample, places the memory byte addressed by a particular register onthe data bus. The three lower order bits of N are simultaneously sentfrom the CPU to the I/O system. In FIG. 11, this is accomplished indevice U409. The N lines may be decoded with MRD-bar to select orcontrol up to seven output devices. In a similar manner, the instructionINP 1 replaces memory byte addressed by the same register with an inputbyte. Similarly the N lines are decoded with MRD bar to select orcontrol the seven possible input devices. The microprocessor also isfurnished with four external flages EF1 through EF4 and a serial dataoutput port Q. All of these various I/O control modalities are used inthe interactive programmer.

The input-output hardware of the programmer shown in FIG. 11 servicesthree classes of I/O functions. The first class of functions, "systemssupport", monitors line and battery voltages and enables the initialbattery test. The second class of functions, "operator interface", runsthe alpha numeric display, beeper, printer, lights for the front paneldiscrete switches 32, 34. In addition, operator interface includesresponding to the following switches: display overlay switch matrix,panel switches, programming head switches, parameter access control anddip switch options. The third class functions relate to"programming-telemetry" interface, i.e. communications between theinteractive programmer and the implant. These functions includegenerating the programming signals and enabling and receiving telemetrysignals.

In the following table, the I/O ports are listed by functionalclassification. Each of the seven input or output ports accesses a fullbyte of data. However, in most of the cases which appear below only onebit of the accessed byte, for example, the least significant bit 0 ofport INP 2, is used for a particular function.

                  TABLE II                                                        ______________________________________                                        SYSTEM SUPPORT                                                                PORT   BIT     FUNCTION                                                       ______________________________________                                        INP 2  0       System Battery Monitor - high = weak                           INP 2  1       Telemetry Battery Monitor - high = weak                        INP 2  6       AC Line Monitor - high = AC on                                 OUT 4  2       System Battery Check/Timer Reset - high =                                     test/reset                                                     ______________________________________                                        OPERATOR INTERFACE                                                            PORT   BIT     FUNCTION                                                       ______________________________________                                        EF     1       Display Switch Keypress - low = keypress                       EF     2       Stat Set Head - low = press                                    EF     3       Action Button - low = press                                    INP 2  3       Printer Busy - high = busy                                     INP 2  4       Display Ready - high = ready                                   INP 2  5       Parameter Access Control - low = full access                   INP 2  7       Stat Set Console - low = press                                 INP 3  0-7     Printer-Clock Communication Port                               INP 7  0-7     Display Switch Decoder - Row, Col                              ______________________________________                                        DIP      SWITCH                                                               SWITCHES #         ON POSITION  OFF POSITION                                  ______________________________________                                        INP 6 0      7         By-pass IR Perform self test                                                  Self-Test                                                    1      8         By-pass magnetic                                                                         Perform self test                                                  self test                                                    2      1         Implant    No preference                                                      Preference                                                   3      2         Neural     Cardiac                                                            Preference preference                                        4      3         Beeper Disabled                                                                          Normal Operation                                  5      4         Not Used                                                     6      5         Not Used                                                     7      6         By-pass printer                                                                          Perform self test                                                  self test                                              ______________________________________                                        PORT   BIT     FUNCTION                                                       ______________________________________                                        OUT 2  6       Clear display - high = clear                                   OUT 2  7       Stat Set Backlight - high = lit                                OUT 3  0-7     Printer - high = data                                          OUT 4  1       Beeper - high = beep                                           OUT 5  0-7     Display - high = data                                          ______________________________________                                        PROGRAMMING-TELEMETRY INTERFACE                                               PORT   BIT     FUNCTION                                                       ______________________________________                                        EF     4       Telemetry Data - low = data                                    INP 2  2       Acquisition - low = acquisition                                Q              Programming Output - high = data                               OUT 2  0       IR Multiplexer - high = IR                                            1       MAG Multiplexer - high = MAG                                          2       Drive Enable - high = enabled                                         3       Telemetry Enable 1 - high - enabled                                   4       Telemetry Enable 2 - high = enabled                                   5       Acquisition Latch - low = latch                                OUT 4  0       Head Power - high = on                                         ______________________________________                                    

For convenience in correlating the I/O ports in FIG. 11 with Table II,the I/O ports are listed below in numerical order in Table III.

                  TABLE III                                                       ______________________________________                                        PORT     BIT      FUNCTION                                                    ______________________________________                                        EF       1        Keypress                                                    EF       2        Stat Set Head                                               EF       3        Action Button                                               EF       4        Telemetry Data                                              INP 2    0        System Battery Monitor                                               1        Telemetry Battery Monitor                                            2        Acquisition                                                          3        Printer Busy                                                         4        Display Ready                                                        5        Parameter Access Control                                             6        AC Line Monitor                                                      7        Stat Set Switch - Console                                   INP 3    0-7      Printer-Clock Communication Port                            INP 6    0        IR Self Test                                                         1        MAG Self Test                                                        2        Implant Preference                                                   3        Preference                                                           4        Beeper                                                               5        Not Used                                                             6        Not Used                                                             7        Printer Self Test                                           INP 7    0-7      Display Switch Decoder                                                        Row, Col                                                    Q                 Programming Pulses                                          OUT 2    0        IR Mux                                                               1        MAG Mux                                                              2        Drive Enable                                                         3        Telemetry Enable 1                                                   4        Telemetry Enable 2                                                   5        Acquisition Latch                                                    6        Clear Display                                                        7        Stat Set Backlight                                          OUT 3    0-7      Printer                                                     OUT 4    0        Head Power                                                           1        Beeper                                                               2        Battery Test and Timer Reset                                OUT 5    0-7      Display                                                     ______________________________________                                    

It should be noted that interrupts are not used for responding to theoperator or the implant. Instead, inputs such as telemetry and parameterselection via the overlay switch matrix appear as external flags. Forexample, when any one of the switch positions 28 (FIG. 3) on the overlaymatrix is pressed EF 1 is activated. On the other hand, while the statset button on the programming head activates EF 2, the statset panelswitch 32 on the console is decoded at bit 7 of input port 2. In eitherevent, the status of the switch is tested by software. In the case of EF1, the accessing and testing of the bit are carried out in a singleinstruction. Data bytes for the printer are provided through input port3. I/O port 3 is not shown in FIG. 11 since the instruction INP 3 putsthe data on a data bus common to both the interactive programmermicroprocessor and the printer microprocessor for 150 (FIG. 8) formingpart of the printer control system 48. In contrast input port 7 accessesa byte of data representing which of the 120 overlay switches isdepressed. INP 7 accesses the 8 bit I/O port U415 of FIG. 11. The presetdip switches 86 of FIG. 11 are accessed at I/O port 6. The data bytecorresponds to eight separate switches two of which are not used atpresent. Three of the switches are used to by-pass or disable certainportions of the self test routine. These switches would be present toby-pass the particular feature that the user either did not have in hisprogrammer or did not wish to use. Another switch disables the audibletone generator and two other dip switches correspond to the type ofimplant which the user intends to program. If the cardiac preference ischosen, it does not disable the programmer from programming neuralimplants but it does display initial screen messages relating toselection of the type of implant.

Programming is accomplished by modulating the Q output of themicroprocessor on the microboard 116. Bits 0 and 1 of I/O port 2 steerthe output to IR or MAG pulses, while bit 0 of utility port 4 accessedby device U414 connects power to the lead.

Throughout the block diagrams in FIGS. 11, 12 and 13 for the digital andanalog I/O boards and self-test circuit, device designations for digitalcomponents, gates, flipflops, registers, etc. identify standard RCA CMOSdigital integrated circuits. In the analog circuitry of FIG. 12,operational amplifiers U101U104 refer to standard linear integratedcircuits available from Motorola or RCA for example.

The purpose of the analog I/O board FIG. 12 is to interface themicrocomputer comprising the CPU, memory and digital I/O boards shown inFIGS. 9, 10 and 11 with the programming head. The analog circuitry ofFIG. 2 is mounted on the same kind of printed circuit card as the"microboards". The card has a card edge connector designated P101 todifferentiate it from the backplane connector P1 common to the CPU,memory and digital I/O boards 116, 126 and 142. The card edge connectorP101 has a number of connections in common with the backplane connectoras shown in FIG. 8. All the designations for the card edge connectorP101 are shown, however, in FIG. 12 in detail. A second connector on theanalog card J101 provides ten output lines which extend to theprogramming head 12 via cable 14 as shown in FIG. 8. Head power isprovided over the cable connector 8 in response to the power head ONsignal at card edge pin W which operates the head switch circuit 152 ofFIG. 12. A buffer circuit 154 has a plurality of isolation amplifiersinterfacing head control signals from the microcomputer with theprogramming head. The acquisition latch signal on card edge pin 10 isproduced by the fifth bit of the output byte transferred by the I/O port2 (device U413, FIG. 11). From card edge pin 10, the acquisition latchsignal is passed through a buffer amplifier U102 to pin 11 of the cableconnector J101. Telemetry enable 1, drive enable and I/R drive aresimilarly buffered via amplifiers U101. The magnetic coil drive for theprogramming head is provided by coil driver circuit 156 on the analogboard of FIG. 12. The signal to create a mag pulse is produced ondigital I/O port FIG. 11 by I/O port 2 (device U413) in conjunction withthe Q output of the microprocessor. The one bit of the output byte isANDed with the Q signal to produce the mag drive IN signal to analogcard edge pin N. This signal is coupled to a chain of amplifiers andsignal conditioning circuitry shown in detail in the coil driver circuit156 powered by the 18 volt supply via connector J103. The output of thecoil driver circuit 156 is connected to cable connector J104 and J105which interconnect the large programming coil in the head with the coildriver circuit 156.

The action and standard buttons on the head are connected via the cableconnector pins 1 and 9 respectively to respective inverters U105 on theanalog board and are presented on the card edge pins 18 and 19.Telemetry data in binary form from the programming head arrives over pin10 of the cable connector J101 and is immediately passed through atelemetry data envelope shaper 158 whose output on card edge pin Xduplicates the telemetry data input signal of the implant on line dataB. Card edge pin X is connected directly to backplane pin X of themicrocomputer system which is the EF4 input for data telemetry.

In addition to the head/console interface function, the analog board 148has a number of other utility systems including lamp driver circuit 160,shut-off timer circuit 162, and screen timer circuit 164. The characterstrobe signal to the alpha numeric display is produced by I/O port 5,i.e., by software. The strobe signal is connected via a pair ofinverters (U405) to pin 37 of the display connector and also to analogcard edge pin 11. Although absent in the present embodiment shown inFIG. 12, the signal on card edge pin 11 can be used to continuouslyretrigger the screen timer 164. The strobe signal (screen time restore)is present only when a new display is created. Thus, if a new displayhas not been created for thirty seconds, for example, the screen isblanked if there has been no change. The strobe signal (screen timerestore) resets the timer in effect each time a new display ispresented. Although not present in this embodiment, the screen timer 164also actuates one of the lamp drivers U113 to light a screen restorelamp via card edge pin 9.

Shut-off timer 162 is used for timing the battery self test function. Abattery check input signal on card edge pin 3 is buffered to produce thebattery test load and enable signal on card edge pin 13. At the sametime the battery check signal causes a shut-off timer to disconnect theline current supply to the battery chargers while a dummy load is placedacross the batteries. Battery condition monitors 166 continuouslycompare the system voltage and telemetry voltage to a reference voltagelevel. Differential amplifier U104 is connected via card edge pin 12 tosystem voltage and produces an output to card edge pin T for systembattery checkpoint while differential amplifier U103 is connected totelemetry voltage via the J103 connector and produces a telemetrybattery checkpoint at card edge pin U.

The digital I/O board 142 is shared with a communication self testsystem shown in FIG. 13. The interactive programmer is designed to workwith implants which are programmed via reed switch closures or someother magnetic sensor in response to the magnetic coil in the head or bypulsed I/R. The programmer is also designed to receive data from animplant by means of the shunted tuned coil system described in U.S. Pat.No. 4,361,153. The communication transducers of the implant areduplicated in the programmer in self-test module 180 shown physically inFIGS. 2, 5 and 6 and electrically in FIGS. 8 and 13. The self-testmodule 180 includes cable connector pins 182 and a puck-shaped body 184of suitable potting material having a coaxial boss 184a. The module 180encompasses the electrical implant communications transducers. Flat coil186 is coaxially mounted in the module 180 on a substrate 188. A reedswitch 190, or equivalent magnetic sensor, is centrally located in themodule 184 inclined at 45° to the axis. The I/R sensitive device isprovided by a photodiode 192 located on the axis below the reed switch190. The epoxy potting material preferred for the self-test module 190is tinted with IR transparent red pigment. The electrical leads from thetransducers 186, 190 and 192 are connected to the cable connector pins182 with a common ground connection. The connector pins 182 are in turnconnected by a cable to the self-test circuit on board 142 as shown inFIG. 13. As shown in FIG. 2, self-test module 180 is positioned inselftest module bracket 94 within the console 10 at the bottom of thecradle 10c for the programming head 12, boss 184a being received in amating aperture in the floor of the cradle 10c such that the test module180 is approximately coaxial with the cradled programming head 112.

The self-test of the communications links verifies the operation ofthree separate functional capabilities. The first is the ability of theprogramming head to detect the presence of the implant withinprogramming range, the "acquisition" function. The second is the abilityof the programming head to output sufficiently accurate magneticprogramming pulses and to receive these back from the implant via thetelemetry data transfer function. The last is the ability of theprogramming head to output sufficiently accurate infrared programmingpulses and to receive these back via the telemetry data function. Thecommunications self-test system 84 (FIG. 7) includes the interconnectedself-test module 180 and the self-test circuit of FIG. 13. The self-testcircuit of FIG. 13 incorporates sufficient circuitry to allow the systemto receive magnetic or infrared programming inputs, sample them rapidlyenough to retain their timing accuracy and return them to theprogramming head via the telemetry coil. The communications testingelectronics need not be connected to the interactive programmerelectronics; rather it is sufficient for information to be relayed tothe test circuitry by the programming head 12, stored in the testcircuitry of FIG. 13 and then relayed back to the interactive programmerconsole 10 via the programming head 12. However, it is desirable forthis test circuitry to be physically attached to the interactiveprogrammer console so that it is continuously available. For thisreason, it was decided to install the necessary input/output transducers(read switch 190, infrared sensor 192 and telemetry coil 186) inside theinteractive console 10, immediately below the programming head cradle.Thus, when the programming head 12 is in its cradle, it is correctlyoriented to communicate with the sensors located inside the programmingconsole. The additional circuitry necessary to receive, store andretransmit the communications test signals is located on card 142 alongwith digital I/O circuits in the main electronics card cage. However,its only connection to the rest of the programmer electronics is that ituses the same power supply.

The actual communications link self test procedure begins by turning onthe telemetry transmitter (DRIVE ENABLE) in the programming head 12 andlooking for acquisition of the programming console's implanted coil. Ifacquisition is not detected, the user is asked via the display screenwhether the programming head is in the cradle. If it is, then theacquisition function is assumed to be non-functional. If it is not, heis asked to place it in the cradle and indicate on the display screenwhen he has done so. The system will then test again for acquisition.

Once acquisition has been detected, the testing of the magneticprogramming link is begun. The microprocessor 88 (FIG. 7) outputs viathe magnetic programming coil in the head 12 a 6 msec pulse train,including pulses of 0.75, 1.0 and 2.0 msec duration. These pulses aredetected by the magnetic reed switch and stored in the shift registersof the self test electronics circuitry. The self test circuitry of FIG.13 then feeds these signals out at a 1 kilobaud equivalent rate via thetelemetry output function. The telemetry data signal is detected in theprogramming head 12, decoded and fed back to the microprocessor 88. Themicroprocessor then compares the transmitted and received signals todetermine whether or not the system is functioning properly.

Regardless of the results of the magnetic programming test, the systemrepeats a similar test for the infrared programming link. The primarydifference between the infrared and magnetic test is that the infraredpulse train does not include the 0.75 msec programming pulse and thatthe telemetry data is transmitted back at 333 baud, rather than 1kilobaud.

These two tests allow the programmer to determine the independentfunctional capabilities of three communications links. If the magnetictest fails and the infrared test is passed successfully, the magneticprogramming output is faulty, while the telemetry and infrared functionsare working properly. Similarly, failure of the infrared test withsuccessful completion of the magnetic test would identify the failure asbeing in the infrared programming outputs. Failure of both tests wouldindicate the probable failure is in the telemetry data link.

The circuit of FIG. 13 can be divided into two general modes ofoperation. The first mode being the reception of infrared pulse widthdata from the programming head 12, the storing of this data in serialregisters, and the transmission of this data using the passive magnetictelemetry channel. The second test mode is reception of magneticprogramming pulses, the storing of this data, and the transmission ofthis data using the passive magnetic telemetry channel. Both of thesemodes require that acquisition has occurred.

Mode 1: With the programming head 12 placed over the self test module180 (FIG. 2), 16 kHz electromagnetic energy is applied to the telemetrycoil, which is amplified by Q313 and turn on IR enable one-shot U301A inFIG. 13. When this happens, the infrared circuits are powered up, andany infrared pulses present will be amplified by Q302 and U312. Theamplified pulses are routed to gate Q304 (pins 1 & 2) which inverts thedata signal and toggles a flipflop composed of two AND gates U304 (pins10 and 11) and sets the return data clock rate so that the infrared datais transmitted back at the same rate as it is received. When U304 (pins10 and 11) is set in the other state (reed switch programming) the datais transmitted back at a rate three times as fast as it is received. Theoutput of U304 (pin 4) is connected to the inputs of the 128 bit staticshift register, U315, and U306 (pin 6). When data appears on U306 (pin6), pin 3 (U306) will latch high and reset U303 (program counter).

The pulse used to reset U303 is also used to trigger U316 (pulsestretcher) which introduces enough delay so that when this outputappears at U307 (pin 10) it serves as the first clock pulse. Withoutthis circuit the first clock pulse would be missing. With one input toU307 (pins 1 and 2) low and the other input high, pin 5 of Q311 is heldhigh and the clock oscillator will run. With pin 8 (U307) held high bythe program counter, clock pulses can now pass through U307 and U305 andwill cause the shift register to shift one bit for each pulse itreceives. As this is happening, the program counter counts each pulseand will turn off the clock pulse U310 and U315 when its count reaches256 (2). The clock pulses are obtained from a true-gated astable circuitU311, which is running at 100 kHz. This frequency is divided by three byflipflops U308. The 128 bit shift registers U310 and U315 and theprogram counter U303 are stepped at 100 kHz or 33 kHz. This steppingrate is used for both the incoming infrared signal and the outgoingtelemetry signal.

When the program counter U303 reaches a count of 256, U306 (pins 8 and9) is triggered, which stops the flow of clock pulses to the shiftregisters. This action is the result of flow of commands through U306(pin 10), U305 (pin 4), and U307 (pin 8). It should be noted thatneither the clock nor the program counter has been stopped by thisaction. The program counter counts another 128 counts and then triggersone-shot U301 (B). When this occurs, clock pulses to U303 are stopped.U301 (pin 10) now restores the clock pulses to the shift registersthrough U316, U305, and U307. U309 provides two additional storageregisters. As the data is transferred out of the storage register,transistor Q314 is turned on and off, which shorts out coil 186 (L301)for telemetry. When the data is being shifted out of the shiftregisters, their input is held low and this clears all stored data fromthem. One-shot U301 (B) allows enough time for the stored data to beremoved and then rests all circuits to a receive mode.

Mode 2: With the programming head placed over the self test module, 16kHz electromagnetic energy is applied to the telemetry coil whichreflects a signal to the programming head indicating acquisition. Whenthe reed switch 190 (RD301) is operated by magnetic programming pulsesfrom the head 12, electrical pulses are generated, which toggle flipflopU304 (pins 10 and 11 so that the data dump rate is three times the rateas data storage rate. The output of U304 (pin 4) is connected to theinput of the shift registers U315 and flipflop U306 (pin 6). When dataappear at U306 (pin 6), pin 3 (U306) will latch high and reset U303(program counter).

The pulse used to reset U303 is also used to trigger U316 whichintroduces enough delay so that when this output appears at U307 (pin10), it serves as the first clock pulse. With one input to U307 (pin 1and 2) low and the other input high, pin 5 of U311 is held high and theclock oscillator will run. With pin 8 (U307) held high by the programcounter, clock pulses can now pass through U307 and U305 and will causethe shift register (U310, 315) to shift one bit for each clock pulse itreceives. As this is happening, the program counter counts each pulseand will turn off the clock pulses to U310 and U315 when the countreaches 256, which is the combined storage of U310 and U315. The clockpulses are obtained from a monostable oscillator U311, which is runningat 100 kHz. This frequency is divided by three by U308 and U306. Theshift registers U310 and U315 and the program counter U303 are steppedat 100 kHz or 33 kHz. This rate is only used in the loading mode. A 100kHz clock rate is used in the dump mode'.

When the program counter reaches a count of 256, U306 is triggered, andthe flow of clock pulses to the shift register is terminated. Therouting for this command flows through U306 (pin 10), U305 (pin 4), andU307 (pin 10). The program counter and the clock are still running andthe program counter will count another 128 counts and then trigger U301(B). When this occurs, clock pulses to U303 stop.

Earlier in this mode, U304 was set to allow the clock rate to be fullrate during the dump cycle. With U304 (pin 10) low clock pulses areallowed to flow from U311 (pin 11) through U306 (pin 11), U305 (pin 3)to the shift registers (U310 and U315). The stored data is now moved outof the shift registers to operate transistor U314. When a high level isshifted to U314, it turns on and shorts the telemetry coil. As the datais shifted out of the shift registers, no new data is entered so thatafter all the data is shifted out, the registers are clear of storeddata.

U301 (B) now times out and will reset the latches and the clock routingand turns off the oscillator. The circuit is then ready to receive ineither mode of operation.

The microprocessor system 88 comprises CPU board 116, EPROM board 126and the digital I/O porton in FIG. 11 of board 142. The outputs of thismicroprocessor system control directly most of the functions of theprogrammer including the display, illumination or activation of buttonsand lights on the console and programming head, the programmingtransmissions and audio tone. All of these operations are controlled bya set of instructions stored in the microprocessor EPROM board 126. Thesequence of instructions or software directs the sequence and timing ofall microprocessor controlled operations. The software not only controlsthe sequence of operations but actually carries out the formation of theprogramming pulses to the implant. For example, magnetic or IR pulsesare created directly by software control of the Q port of themicroprocessor chip.

The software instructions residing in the memory are in the form ofbinary ones and zero's. The machine code instructions are typicallydesignated in hexidecimal digit form, one byte of eight bits requiringtwo hex digits. Similarly, the address of any given byte memory isprovided by four hex digits.

The software associated with the microprocessor system for theinteractive programmer is organized into a plurality of modules referredto as Subparts A through N. Subpart A is an equate table module which,beginning at page 2 designates shorthand lables for fixed numbers atidentified memory locations. Subpart B defines the macro instructionswhich are labels that the assembler recognizes as shorthand for a shortseries of instructions which are specified in assembly language. Theselabels are used by the programmer in composing the program. The softwareactually begins in Subpart C with the self test module. The self testmodule is divided into consecutive sections for the various tests. Themain program module is contained in Subpart D module. Subpart E containsthe Omnicor and neural 900 series main program for the interactiveprogrammer. This routine programs the operations illustrated in FIG.16A-16D and FIG. 17 for the Omnicor series of cardiac pacers and theCordis 900 series of neural stimulators. All these implants have notelemetry and are programmed by magnetic impulses in a similar manner.Subpart F is the main software module for Multicor-type pacers. Theoperation is illustrated in FIGS. 18A-18H and FIG. 19. Subpart Gcontains the software main module for Gemini-type pacers which areprogrammed with binary pulse width modulated magnetic impulses and dohave telemetry. Subpart H is the main program module for programmingSequicor-type pacers of the type described in copending application Ser.No. 207,003. Subparts I, J, K and L contain programming sub-routines.Subpart M is the I/O sub-routine module. Subpart N contains the printermodule. Subpart O contains the message module containing all of theoverlay messages for the display and finally Subpart P is the tablesmodule containing lists of the memory addresses and values of theprogrammable parameters.

FIG. 14 illustrates a typical programming procedure for a non-telemetryimplant. The programming routine is started with the programming head 12in the console cradle 10c. On turning on the power with the ON/OFFswitch 32, the interactive programmer automatically goes through a selftest procedure. The programmer automatically displays the format of FIG.15A to tell the user that the self test routine is in progress. Thesoftware automatically tests the main battery voltage, the random accessmemory, the EPROM containing all of the software instructions, theprogramming battery, the programming communications systems and theprinter. The name of each test comes up on the screen as in FIG. 15A.When each test starts, the name of the test dashes, and OK appears whenthe test is satisfactorily completed. The message of FIG. 15B appearswhen the system is operating on line voltage rather than the mainbattery. The message of FIG. 15B is displayed for three seconds and thenthe self test sequence is resumed.

In the screen representations in the drawings, two asterisks indicatethe beginning and the end of a portion of the display line which isblinking. FIG. 15C indicates the display screen message associated witha RAM failure. This is a serious system malfunction and the consolebeeps for two seconds and stops at this point in the operation. The sametype of response occurs for malfunction in the read only memory test. Atthe start of the communications self test, the inability to obtain"acquisition" gives rise to the screen message in FIG. 15D. If theprogramming head is in fact in the cradle, the operator is instructed topress the diamond-shaped target after the sentence "If yes, press here."If the programmer is in the cradle and the operator presses the targetbut acquisition is still not obtained, the message of FIG. 15E isdisplayed, the console beeps for two seconds and the system stops atthis point. If a problem appears in the magnetic programming pulses fromthe head during the communications self test, the message in FIG. 15F isdisplayed. To the right of the words "MAG PULSE", one of the possibleeleven messages will appear concerning the condition of the first,second or third pulse:

1 Too late

1 Too soon

1 Too long

1 Too short

2 Too late

2 Too soon

2 Too long

2 Too short

3 Too late

3 Too soon

3 Too long

3 Too short

The displays of FIGS. 15G and 15H illustrate the response to othervariations in communications malfunctioning. Note that in the case of anIR pulse failure, the programmer can, of course, be used for programmingnon-IR implants such as the entire Omnicor line of cardiac pacers atpresent.

With reference again to the programming procedure of FIG. 14, after theself test routine is completed, which takes only a couple of seconds,the screen displays a choice between neural and cardiac pacer implantsunless the internal DIP switch has been set to cardiac pacer preferencein which case the next display will be that illustrated in FIG. 1 of allthe programmable cardiac pacer models. Otherwise the display of FIG. 1is selected by pressing a diamond-shaped target next to "Cardiac Pacer"(not shown). Each pacer model for which there is a programming routinein software will be preceded by a target. To access the programmingroutine for a given model, the operator presses the display target atthe correct model number. Note that after the implant type has beenselected, i.e., neural or pacer, the "stat set" standard parameters canbe programmed at any time by removing the programming head from theconsole cradle, pressing the standard button on the programming head orthe console, placing the programming head over the implant untilacquisition is obtained and then while holding the programming headstationary, pressing and releasing the action button. This operationwill automatically program the implant to standard nominally safeoperating parameters. In the case of a neural implant, stat set turnsthe neural stimulator off. In the case of a cardiac paper, stat setchooses safe operation such as 70 bpm in the ventricular inhibited mode(VVI). The operator knows that the stat set values have been programmedsuccessfully by the cessation of the audible tone which began with thepressing of the action button and the unlighting of the acquisitionlight on the programming head unless the console beeps and the messageappears on the screen.

If the operator continues in the normal mode of reprogramming, theselection of a model number causes the display of a "menu" ofprogrammable parameters and values. For example, FIG. 16A shows thedisplay screen after selection of Model 162D Omni Stanicor. The proposedvalues are blank at first. The operator selects the values for the rateoutput and mode parameters by pressing one target beside the selectedvalue for each one. If the operator selects 65 bpm at an output currentof 4 milliamps in the asynchronous (VOO) pacing mode, the next displayis as shown in FIG. 16B. Note that the displays in FIGS. 16A and 16Bcontain a target next to the words "list models". This enables theoperator to go back to the model listing if desired. Of course, at thistime or at any other time after the selection of the type of implant,the operator can "hit" the standard button in an emergency.

Next in the routine programming operation, the program target at thebottom of the screen in FIG. 16B is pressed by the operator. The screenchanges to the display of FIG. 16C which while advising the operator ofthe proposed parameter values which he is going to program, instructsthe operator to place the programming head 12 on the patient over thesite of the OmniStanicor pacer and then depress and release the actionbutton or to hit the target next to "cancel pending action". Next theoperator following these instructions removes the programming head fromthe console cradle and moves it over the implant site until the "ACQ"light goes on. After the action button is released, the programmerautomatically sends the prescribed number of magnetic impulses via theprogramming head to the implant in order to cause the implant toreprogram itself to the desired parameter values. The screen changesautomatically to the display of FIG. 16D indicating that the presentvalues match the proposed values, assuming that the implant has receivedthe program correctly. At this point if the operator desires toreprogram any one or more of the parameters he simply selects andpresses the target next to the value in FIG. 16D causing the proposedvalue slate to change. On the other hand, if the programming issatisfactory, the doctor presses the display target at print and theprinter automatically prints out the format shown in FIG. 17. The dataand time, model number, electrode location and programmed parametervalues are automatically included. Spaces for the patient's name, serialnumber, operator, location, doctor and other remarks are provided on theprinted record. After the printing is completed, the operator pushes thepaper advance and tears off the paper tape, writes in whatever notationshe desires, and places the tape in the patient's file as a permanentrecord of the programmed values of the patient's pacer. While theprinting operation is taking place, the display screen includes themessage "STOP PRINTING" with a target next to it.

For even more versatile pacers, such as Cordis Model 336 Multicor Gamma,a typical sequence of displays is shown in FIGS. 18A through 18H and atypical printout in FIG. 19. Because of the greater number of parametervalues, the selection process is broken into two parts, the first ofwhich as shown in FIG. 18A is to select the parameter and the second ofwhich is to display the available values for the selected parameter, ason the right-half of the screen in FIG. 18B. As in the Omnicorprogramming, a value must be specified for each of the parameters beforeprogramming. In the Multicor pacer, the electrode can either be unipolaror bipolar and this information must be known by the physician beforeprogramming in order to avoid the possibility of an error in designatingthe ANODE. Thus before the display of FIG. 18A, the screen asks theoperator to identify whether the electrode is unipolar or bipolar. Afterall of the values are designated for the programmable parameters of theMulticor, the display appears as in FIG. 18C. The right-half of thescreen contains the action list which now includes the target next tothe word "proposed". The proposed values are programmed by pressing thetarget and following the instructions in the ensuing display of FIG.18D. As in the preceding example, the programming operation can beaborted by pressing the cancel action target. Following programming, ifno further changes are desired, the print present target is pressed togenerate the printout of FIG. 19.

Programming a Cordis Gemini pacer is illustrated below. The Gemini paceroutput formation circuits, diagnostic circuitry and emergency system aredisclosed in copening Applications Ser. Nos. 239,467 and 239,468. Inaddition, the Gemini pacer is equipped with telemetry of the typedisclosed in U.S. Pat. No. 4,361,153 and copending application Ser. No.195,665. Telemetry enables two-way communication between the programmerand the implant.

After the programmer has been turned on, the self test has beensuccessfully completed and implant type (i.e., pacer) has been selected,the screen displays all of the programmable cardiac pacers by modelnumber. Pressing the diamond shaped target beside the appropriate modelnumber selects a corresponding programming routine and appropriatetables from EPROM. Assume the user or operator selects not one of thepacer models but instead hits the STAT SET button 72 on the programminghead 12. This causes the display to blink the "Action pending--programstandard" message. The user places the programming head over the implantand presses and releases the action button. The display informs the userthat the programmer is not satisfied that the standard values have beenprogrammed and directs the user to repeat the programming operation,which he does. Finally, the screen confirms that the standard valueshave been programmed and the user resumes the programming operation bypressing the target to list the models. Note that the programming of thestandard value takes place before the programmer was advised of thepacer model number.

Continuing with the programming operation, the user selected Cordismodel number 415, the Gemini pacer with two chamber, unipolar/bipolarlead and telemetry capabilities. The Gemini pacer is capable of beingprogrammed in a wide variety of pacing modes. The next display occurringafter the selection of the Gemini pacer instructs the user tointerrogate the Gemini pacer to learn if the present values of itsparameters. Instead, however, the user again hits the programming headstandard button which halts the programming operation and displays guideand confirm the programming of the safe standard values. The displayallows the user to go back to the model listing or continue with theinterrogation. The interrogation instruction orders the user to hit theaction button on the programming head. If acquisition had not first beenobtained, the display would direct the user to repeat interrogation.

The interrogation operation is shown in FIG. 20. The microprocessorsystem 88 issues a string of binary pulse width modulated magneticimpulses via the programming transducer 200 in the programming head 12.In the implant the programming transducer 202, i.e. the magneticresponsive element such as a reed switch, receives the transmitted dataand passes it into the computer system within the Gemini pacer whichincludes means 204 for checking the period, pulse widths and bit countof the command and means 206 for checking an identification codecorresponding to the model number of the pacer. Finally, a program codechecking operation 208 decodes the interrogation command and directs theimplant's memory to output serially all stored parameter codes in binarypulse width modulated (i.e., long and short pulses) via the telemetrytransducer 212 which is preferably a shorted coil transponder of thetype disclosed in U.S. Pat. No. 4,361,153 and copending application Ser.No. 195,665. The parameter data is received by the telemetry transducer214 in the programming head 12 and transferred to registers 216 forstoring present values to which the implanted cardiac pacer is currentlyprogrammed.

The results of interrogation of a Gemini pacer, for example, aredisplayed for the following parameters: mode (meaning pacing mode suchas VVI), rate, delay (i.e., AV delay), anode (whether one electrode of abipolar lead or the pacer case), pace limit (whether on or off),electrode location and type for channel 1 and channel 2 (atrial orventricular location and unipolar or bipolar electrode type), therefractory periods specified for channels 1 and 2 and the sensitivityand output on channel 1 and channel 2. Typically channel 1 and channel2, of course, refer to atrium and ventricular. The sensitivity refers tothe sensed voltage on the pacer lead resulting from natural cardiacactivity in order to inhibit pacer action. Assume the sensitivity is OFFcorresponding to infinite threshold on channel 1. The output intensityis specified in terms of paired amplitude and pulse width. Assume, forexample, the interrogated values are an amplitude of two milliamps onchannel 1 and 0.2 milliseconds pulse width and on channel 2 andamplitude of ten milliamps and 1.0 milliseconds. Output intensities areprogrammed in predetermined pairs of pulse width and amplitude arrangedin a monotonically increasing series as disclosed in copendingApplication Ser. No. 239,468. Note that if the electrode location andtype are not specified for either channel, this condition results in themode being indeterminate. Before any further programming other than thestandard values can take place, the right-half of the screen onlypermits the operator to specify the location and type for the channel 2electrode. Targets are not presented along side any of the otherparameters on the left-hand half of the Gemini display. In response tothe electrode uncertainty, the user selects ventricular location andunipolar type electrode for channel 2 by pushing the target on thescreen next to VU. In response the letters "PROP" appear beside theelectrode selection and the designation VU appers on the left-hand sideof the screen. Note that this is not a programming operation. No changeis effected in terms of control of the pacer parameters directly.However, this information will be transmitted to the pacer for storagein the pacer's memory. In addition to the location and unipolar/bipolartype of electrode, the electrode type may be designated as "shared" inwhich case the electrodes share a common annode. Following designationof the electrode, targets appear beside all of the parameters on theleft-hand side of the display screen allowing the user to now proposenew values. In addition, having "located" the channel 2 electrode in theventricle, the mode is clarified to "VVI". The proposed designation orparameter value is underlined on the left-half of the screen. Theunderline is not removed until the pacer has been programmed.

Next, the user presses the target beside "GO TO ACTION LIST" andgenerates a display which only changes the right-half of the display toindicate various action options. Assume the user selects the programdiagnostic mode. The diagnostic mode automatically selects asynchronousmode (VOO) of fifty-three beats per minute. The diagnostic mode assumesthat the channel 2 electrode is connected to the ventricle. Afterconfirming programming of the diagnostic mode, the display allows theuser to cancel the diagnostic mode and display various options.Diagnostic mode is cancelled by following the displayed instructions.

Following a number of other consecutive illustrations, the hypotheticaluser returns to the proposed value chart and continues to designateparameter values by pressing the target next to electrode in the columnfor channel 1. This generates the electrode menu on the right-half ofthe display from which the user, for example, selects an atrial unipolarshared designation. This selection forces the channel 2 electrode to "AU SH" as well. Attempts by the operator to designate channel 2 assomething other than "A U SH" fail and the user will realize that heshould have selected a "A U" for the channel 1 electrode. Next, if theuser were to attempt to change the annode from the case to an electrode,the display would remind him that electrodes should only be chosen toprovide polar lead as used. If the user selects a parameter to programwhich he then decides not to program, he need not select one of theavailable values for the parameter but can immediately select adifferent parameter. The annode may correctly be designated as the casesince the channel 2 electrode is bipolar. Mode selection is made. Theuser's attempt to program the anode to electrode in a pacer where abipolar channel 2 electrode designation fails. Programming of adverserelationships between rate and refractory period is inhibited bysoftware within the programmer. The paired output parameters are listed.Finally, after all of the parameter values have been proposed to theoperator's satisfaction, the user goes to the action list and selectsprogram proposed. Following the displayed instructions, the user placesthe programming head over the Gemini pacer and presses and releases theaction button.

The ensuing programming operation is diagrammed in FIG. 21. The proposedvalues displayed on the left-half of the display are contained inproposed value registers 222 of the microprocessor system 88 in theprogrammer. When the action button is activated after acquisition of theimplant, the proposed values are serially output via the programmingtransducer 200 in the head 12 in the pulse width modulated magneticform. The binary string contains the proposed values which areunderlined on the left-half of the screen. The incoming pulse string isreceived by the programming transducer 202 and check means 204, 206 and208 in the implanted pacer. In addition the parameter code is subjectedto an additional check 218. Verifying the programming data, theoperating memory 210 of the pacer loads the desired parameter codes andautomatically echoes out in serial fashion the new parameter codes viathe telemetry transducer 212. The programmer receives the echo; softwaremeans 220 in the programmer verifies the echo and compares the datastring received from the implant with proposed value registers forcontradictions.

Finally, after lowering the rate parameter from 125 beats per minute to80 beats per minute, the user succeeds in programming the implant tofull atrial and ventricular inhibited AV sequential operation. Theright-half of the display contains an action list from which the usermay select "PRINT PRESENT". The printer sub-routine serves the correctparameter values and model numbers to the printer system which adds thedate and time, creating the printout.

The foregoing display scenarios were designed to illustrate variousprogramming modes and interactions with the user. In particular, withrespect to the Gemini scenario, programming would actually be morestraightforward without the deliberate missteps taken in the scenario toillustrate the response of the programmer. The system can be modified toaccommodate new biomedical implants such as new types of pacers and newparameter values and even new parameters. Versatility is the hallmark ofthe interactive programmer. The system is not limited to the type ofdisplay and user input (overlay switch matrix) disclosed in thisapplication. For example, a CRT or equivalent screen-type display couldbe substituted; and instead of the transparent touch sensitive switchmatrix, other types of two dimensional screen inputs such as light pensor other types of mechanical switch arrays can be substituted. The useof dual acquisition lights is optional as is the printer, calendar clockand other features of the interactive programmer. Since all of the userinteractions, display messages and formats, scenarios and programmingoutputs and alarms are on software, they can be changed by reprogrammingthe appropriate EPROM's without changing any of the hardware of theinteractive programmer. The overall system is not limited by design tothe use of any specific computer circuitry, memory capacity or I/Ocapacity, although the disclosed CDP 1802-based system is presentlypreferred. The communication self test system is, of course, not limitedin concept to any specific media. Ultrasound or RF communication systemscan be accommodated by the use of appropriate transducers in the selftest module within the programmer.

Besides its versatility, the interactive programmer for the first timeprovides the medical community with an intelligent programming consolewhich not only prompts the operator but corrects and explainsinappropriate commands by the user to achieve an unprecedented degree ofcooperation between the programming console, the implant and thephysician. Safety is enhanced by the ability to lock out forbidden modesand potentially disadvantageous combinations of parameters by means ofsoftware. The addition of telemetry capability assures the physicianthat the implant's registers have in fact received the correct data byverifying the automatic echo of a full transmitted string upon receiptby the implant. The important concept of limited access implies that asingle console may have different capabilities for different operators.That is, it may be given a hierarchy of parameter access levelsdependent upon the "security clearance" of the operator. The automaticprinter relieves the operator of the responsibility for recordingcorrectly the programmed parameters. This feature is particularlyimportant for non-telemetry pacers where in the past, the only means ofdetermining the present values of parameters were indirect by way ofinference from the magnet rate EKG, in the absence of reliable records.

The foregoing description, appendices and drawings are intended to beillustrative only rather than restrictive, the scope of the inventionbeing indicated by the appended claims.

What is claimed is:
 1. An interactive programmer console for programmingimplantable biomedical devices by enabling the operator to select amonga number of parameter options including parameters and parameter valuesand then executing the reprogramming of the implant in accordance withthe selected parameter options, comprisinga display screen, atransparent switch matrix sheet covering said screen and having aplurality of transparent touch sensitive switch locations of undefinedfunctionality distributed over the surface of the screen, means fordisplaying on said screen a selectable set of parameter options bysimultaneously generating a plurality of parameter option messages onthe screen with juxtaposed targets over corresponding arbitrary switchlocations so as to define the functionality of the corresponding set ofswitch locations, means responsive to operator actuation of any switchlocation for ignoring such actuation unless a target is present at suchlocation, means responsive to operator actuation of a switch location ata target on said screen for registering the selected parameter optionindicated by the juxtaposed message on the screen, memory means foraddressably storing and retrieving parameter data, and means responsiveto an operator command for encoding and transmitting parameter data fromsaid memory means corresponding to at least one parameter optionselected by actuation of the temporarily corresponding switch, in a formcapable of being received and decoded by said implant for executing thereprogramming of said implant in accordance with the selected parameteroption, whereby individual switch locations in said switch matrix can beredefined under control of the screen to designate different functionsto accommodate different sets of programmable options.
 2. The console ofclaim 1, further comprisingmeans for displaying on said screen aplurality of implant identification codes and for indicating acorrespondence between said switch locations and said implantidentification codes, and means responsive to operator actuation of saidswitch matrix means at a selected one of said switch locations forobtaining from memory all parameter data options associated with theselected implant.
 3. The console of claim 2, further comprising meansresponsive to an operator command for displaying on said screen a set ofprogrammable parameters for the selected implant and indicating acorrespondence between a certain ones of said switch locations and saidparameters, andmeans responsive to operator actuation of said switchmatrix means at one of said switch locations for displaying on saidscreen the optional values for the selected parameter and indicating acorrespondence between a certain ones of said switch locations and saidvalues.
 4. The console of claim 3, further comprisingmeans forindicating while displaying the optional values for said selectedparameter the present value to which said parameter is programmed in theimplant.
 5. The console of claim 1, further comprisinglogic means fordetermining inconsistent choices among parameter values for a givenimplant and for responding to operator actuation of said switch matrixat a selected location which would result in an inconsistent parameterchoice by disallowing the obtaining of the inconsistent parameter datafrom said memory means and for displaying an explanation on said screen.6. The console of claim 1, further comprisingmeans responsive tooperator selection of an implant with telemetry for interrogating theimplant via telemetry to ascertain its present parameter values, meansfor storing and displaying on said screen said present parameter values,and means for inhibiting selection of parameter data by the operatorwhich conflicts with the present stored parameter data.
 7. The consoleof claim 1, further comprisingcoded access switch means assuming one orthe other state in response to the setting of a predetermined codedvalue by the operator, and means for limiting access to certainparameter data in said memory means in accordance with said coded accessswitch means state.
 8. The console of claim 1, further comprisingmeansfor identifying on said screen the switch location for a set of standardvalues of parameters, said memory means containing an addressable set ofstandard parameter values, means responsive to actuation of said switchmatrix at the switch location identified for standard values forobtaining said standard value set from said memory means and executingreprogramming in accordance therewith.
 9. The console of claim 8,further comprisingsaid memory means having means for storing at leasttwo mutually exclusively addressable sets of standard parameter valuesfor different respective generic types of implants, means responsive tooperator selection of the generic type of implant for limiting theaddressability of the standard values in said memory means to thecorresponding set.
 10. The console of claim 8, further comprisingamovable programming head containing a programming transducer systemcoupled with the remainder of said programming console and having anauxiliary standard switch, said means for obtaining said standard valuesfrom said memory means being further responsive to actuation of saidstandard switch on said programming head.
 11. The console of claim 1,wherein said display is a two-dimensional, multiple line, alpha numericcharacter display and said switch matrix means switch locations havingoutputs corresponding to respective rows and columns of said switchmatrix.
 12. The console of claim 1, further comprisinglockout means foromitting the target from an otherwise available parameter option inaccordance with a predetermined condition, whereby a conflictingparameter option can be rendered impermissible via the screen so as toignore the actuation of the corresponding switch.
 13. An interactiveprogrammer console for programming implantable biomedical devices havingtelemetry systems by enabling the operator to select among a number ofprogramming choices and then executing the reprogramming of the implantin accordance with the selected parameter data, comprisingmemory meansfor addressably storing and retrieving parameter data, operatorinterface means for specifying desired parameter data, means responsiveto said operator interface means for obtaining corresponding data fromsaid memory means, means responsive to an operator command for encodingand transmitting said parameter data in a form capable of being receivedand decoded by said implant for executing the reprogramming of saidimplant to the desired parameters and values, means for receivingtelemetry data from said implant indicative of the parameter datapresently controlling the implant, means in said console forautomatically testing both the transmitting and telemetry receivingmeans in a two-way communications sequence, a tabletop console and amovable handheld programming head containing said transmitting means andsaid telemetry receiving means and electrically coupled to said console,said console having a programming head cradle, and a self test modulemounted in said console adjacent to said cradle for performing two-waycommunication with said programming head.
 14. The console of claim 13,wherein said self test module includes means for receiving datatransmitted from said programming head transmitting means, means forstoring said received data and means for retransmitting said storedreceived data in a form receivable and decodable by said telemetryreceiving means of said programming head.
 15. The console of claim 14,wherein said programming head transmitting means includes means fortransmitting in a first medium and means for transmitting in a secondmedium, said self test module receiving means including means forreceiving transmission in said first medium and means for receivingtransmission in said second medium.
 16. The console of claim 15, furthercomprisingmeans for causing said programming head to transmit a testsignal to said self test module in said first transmission mediumfollowed by transmission of a test signal to said self test module insaid second medium.